/** 文本（Id）可拷贝，默认tip */
export const TextId = {
  inputNode: 'input',
  renderType: 'tip',
  renderProps: { max: 8, rule: 'center' },
  copy: true,
  width: 'e12',
};

/** 文本（链接） */
export const TextLink = {
  inputNode: 'input',
  renderType: 'link',
  width: 'e12',
};

/** 文本（名字） */
export const TextShort = {
  inputNode: 'input',
  renderType: 'text',
  width: 'e8',
};

/** 文本（标题） */
export const TextMiddle = {
  inputNode: 'input',
  renderType: 'tip',
  renderProps: { max: 12 },
  width: 'e16',
};

/** 文本（描述） */
export const TextLong = {
  inputNode: 'textarea',
  renderType: 'tip',
  renderProps: { max: 16 },
  width: 'e20',
};

/** 文本（网址） */
export const TextUrl = {
  inputNode: 'input',
  renderType: 'text',
  width: 'e12',
};

/** 文本（号码） */
export const TextPhone = {
  inputNode: 'input',
  renderType: 'number',
  renderProps: { delimiter: '-', part: 4 },
  width: 'e12',
};

// /** 文本（md） */
// export const TextMarkDown = {
//   inputNode: 'richEditor',
//   render: ['text'],
//   width: 'e12',
// };

/** 文本（富文本） */
export const TextRich = {
  inputNode: 'richEditor',
  render: ['text'],
  width: 'e12',
};

/** 数字 */
export const Number = {
  inputNode: 'number',
  renderType: 'number',
  // renderProps: {},
  width: 'e8',
};

/** 数字（金额） */
export const NumberMoney = {
  inputNode: 'number',
  renderType: 'number',
  renderProps: { delimiter: ',', part: 3, unit: '¥' },
  width: 'e8',
};

/** 数字（百分比） */
export const NumberPercent = {
  inputNode: 'number',
  renderType: 'number',
  renderProps: { unit: '%' },
  width: 'e8',
};

/** 数据下拉（字典） */
export const SelectDict = (options, config) => {
  // multiple
  const { type, mode } = config || {};
  const inputType = { button: 'radio', radio: 'radio' };
  const inputNodeProps = { options };
  if (type === 'button') Object.assign(inputNodeProps, { optionType: 'button', buttonStyle: 'solid' });

  return {
    inputNode: inputType[type] || 'select',
    inputNodeProps,
    renderType: 'formater',
    renderProps: { options, mode },
    width: 'e8',
  };
};

/** 数据下拉（实时请求） */
export const SelectQuery = () => ({
  inputNode: 'select',
  renderType: 'text',
  width: 'e12',
});

// /** 级联 */
// export const Cascade = {
//   inputNode: 'cascader',
//   render: ['text'],
//   width: 'e12',
// };

/** 图片，支持直接显示，显示按钮/或文本，点击打开预览 */
export const Image = (max = 99) => {
  return {
    inputNode: 'upload',
    inputNodeProps: { max },
    renderType: max === 1 ? 'image' : 'imageList',
    renderProps: { border: true },
    width: 'e12',
  };
};

/** 图片（头像） */
export const ImageAvatar = {
  inputNode: 'upload',
  inputNodeProps: { max: 1 },
  renderType: 'avatar',
  width: 'e4',
};

/** 时间 */
export const Time = {
  inputNode: 'date',
  renderType: 'text',
  width: 'e12',
};

/** 时间（时间段） */
export const TimeRange = {
  inputNode: 'range',
  renderType: 'text',
  width: 'e12',
};

/** 时间（日期） */
export const TimeDate = {
  inputNode: 'date',
  renderType: 'text',
  width: 'e12',
};

// /** 时间（日期段） */
// export const TimeDateRange = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };

/** 时间（日期+时间） */
export const TimeDateTime = {
  inputNode: 'date',
  render: ['text'],
  width: 'e12',
};

// /** 时间（周） */
// export const TimeWeek = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };

// /** 时间（月） */
// export const TimeMonth = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };

// /** 时间（季） */
// export const TimeQuarter = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };

// /** 时间（年） */
// export const TimeYear = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };

// /** 时间（时间描述） */
// export const TimeFromNow = {
//   inputNode: 'select',
//   render: ['text'],
//   width: 'e12',
// };
